package org.example.quartz.task;

import lombok.extern.slf4j.Slf4j;
import org.quartz.*;
import org.springframework.stereotype.Component;

@Slf4j
@Component("testQuartzSlave1")
// 再Job被执行结束后，将会更新JobDataMap，这样下次Job执行后悔使用新的值而不是初始值
@PersistJobDataAfterExecution
// 同一时间将只有一个Job实例被执行，为了避免并发问题导致数据紊乱，建议这两个注解一起使用
@DisallowConcurrentExecution
public class TestQuartz implements QuartzTaskJob {
    /**
     * 核算部门接口
     * 接口地址：GSCloud文档3.1、3.2
     * 行政部门
     * http://ip:port/api/jg/syncbddata/v1.0/bdsyncinterface/syncZzjg
     * 核算部门
     * http://ip:port/api/jg/syncbddata/v1.0/bdsyncinterface/syncHsbm
     **/
    @Override
    public void execute(JobExecutionContext context) {
        //传入变量 lastTime 最后抓取时间
        //链接BIP数据库，查询出需要同步的数据，根据TS时间进行判断。
        //TS从中间库表获取到最后一次更新时间，根据此时间进行增量查询推送；
        //中间库日志表记录推送日志，成功、失败、返回信息等（备查）
        //中间库记录最后推送数据的时间，根据时间进行下次查询的条件；
        //查询脚本
        /**
         * SELECT
         * DEPT.CODE,
         * DEPT.NAME,
         * (CASE WHEN FADEPT.code IS NULL THEN ORG.CODE ELSE FADEPT.code END) as PARENTCODE,
         * 'Department' as ORGTYPE,
         * DEPT.TEL AS TEL
         * FROM
         * ORG_DEPT DEPT
         * LEFT JOIN ORG_DEPT FADEPT ON DEPT.pk_fatherorg = FADEPT.pk_dept
         * LEFT JOIN ORG_ORGS ORG ON DEPT.pk_org =ORG.PK_ORG
         * WHERE
         * DEPT.DR =0
         * AND
         * DEPT.TS > '2024-01-01 00:00:000'
         * */

//        // 获取参数
//        JobDataMap jobDataMap = context.getTrigger().getJobDataMap();
//        // 获取任务名
//        String name = context.getJobDetail().getJobBuilder().build().getKey().getName();
//        // 获取任务分组
//        String group = context.getJobDetail().getJobBuilder().build().getKey().getGroup();
//        // 获取任务描述
//        String description = context.getJobDetail().getDescription();
//
//        if (context.getTrigger() instanceof SimpleTrigger) {
//            // 运行次数
//            System.out.println(((SimpleTrigger) context.getTrigger()).getTimesTriggered());
//        }
//        log.info("----------------------" +
//                        "\n任务名:{}\n任务组:{}\n任务描述:{}\n获取参数paramKey:{}" +
//                        "----------------------"
//                , name, group, description, jobDataMap.getString("paramKey"));
//        try {
////            QuartzJobManager.getInstance().jobdelete(this.getClass().getSimpleName(),"ah");//执行完此任务就删除自己
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
    }
}
